package com.quyunshuo.edwincoffeetwo.network

import com.quyunshuo.edwincoffeetwo.network.bean.ArticleList
import com.quyunshuo.edwincoffeetwo.network.bean.ArticleListRes2
import com.quyunshuo.edwincoffeetwo.network.bean.BaseResponse
import com.quyunshuo.edwincoffeetwo.network.bean.ProjectTabItem
import com.quyunshuo.edwincoffeetwo.network.bean.UserInfo
import retrofit2.http.Field
import retrofit2.http.FormUrlEncoded
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query

/**
 * Home模块的接口
 *
 * @author Qu Yunshuo
 * @since 6/4/21 5:51 PM
 */
interface HomeApiService{

    /**
     * 获取文章列表
     *
     * @param page 页码，拼接在连接中，从0开始。
     * @return
     */
    @GET("article/list/{page}/json")
    suspend fun listArticle(@Path("page") page: Int): BaseResponse<ArticleListRes2>

    /**
     * 登录
     *
     * @param username 账号
     * @param password 密码
     * @return
     */
    @FormUrlEncoded
    @POST("user/login")
    suspend fun login(
        @Field("username") username: String?,
        @Field("password") password: String?
    ): BaseResponse<UserInfo>


    @FormUrlEncoded
    @POST("user/register")
    suspend fun register(
        @Field("username") username: String?,
        @Field("password") password: String?,
        @Field("repassword") repassword: String?
    ): BaseResponse<UserInfo>

    /**
     * 我的收藏列表
     *
     * @param page
     * @return
     */
    @GET("lg/collect/list/{page}/json")
    suspend fun listMyCollect(@Path("page") page: Int): BaseResponse<ArticleListRes2>

    /**
     * 项目列表
     *
     * @param id   分类id
     * @param page 页码，拼接在连接中，从0开始。
     * @return
     */
    @GET("project/list/{page}/json")
    suspend fun listProjects(@Path("page") page: Int, @Query("cid") id: String?): BaseResponse<ArticleListRes2>


    /**
     * 搜索结果
     * @param page   页码
     * @param keyWord  关键词，支持多个，空格分开
     */
    @POST("article/query/{page}/json")
    @FormUrlEncoded
    suspend fun searchResult(
        @Path("page") page: Int,
        @Field("k") keyWord: String
    ): BaseResponse<ArticleList>


    /**
     * 首页项目
     */
    @GET("/project/tree/json")
    suspend fun getProjectTab(): BaseResponse<MutableList<ProjectTabItem>>?
}